package lk.icta.core.dao;

import lk.icta.core.entity.AppointmentSchedule;
import lk.icta.user.entity.User;

import java.util.List;

/**
 * @author Kusal Samarakoon
 */
public interface AppointmentScheduleDAO {

    /**
     * Adding a AppointmentSchedule
     *
     * @param schedule The AppointmentSchedule to be added
     * @param user     The user requesting to add the schedule
     */
    public void addAppointmentSchedule(AppointmentSchedule schedule, User user);

    /**
     * Return all appointmentSchedule of the given D.S. Division.
     *
     * @param user
     * @return List of AppointmentSchedule in the given D.S. Division.
     */
    public List<AppointmentSchedule> getAllAppointmentScheduleByDSDivision(User user);

    /**
     * @param user          User who perform the action
     * @param applicationId Application Id of which the schedule has been attached
     * @return
     */
    public List<AppointmentSchedule> findScheduleByApplicationId(User user, long applicationId);

    /**
     * @param user          User who perform the action
     * @param applicationId Application Id of which the schedule has been attached
     * @return
     */
    public List<AppointmentSchedule> findSchedulesByApplicationId(User user, long applicationId);
}
